<?php

namespace app\model;

use support\Model;

class AdminModel extends Model
{
    /**
     * 关联表名
     * @var string
     */
    protected $table = 'admin';

    /**
     * 主键
     * @var string
     */
    protected $primaryKey = 'id';

    /**
     * 关闭自动时间戳
     * @var bool
     */
    public $timestamps = false;

    /**
     * 可批量赋值字段
     * @var array
     */
    protected $fillable = [
        'username',      // 用户名
        'password',      // 密码
        'access_token',  // 访问令牌
        'created_at',    // 创建时间
        'updated_at',    // 更新时间
        'status'         // 状态：1正常 0禁用
    ];

    /**
     * 隐藏字段
     * @var array
     */
    protected $hidden = [
        'password',
        'access_token'
    ];

    /**
     * 创建管理员
     * @param string $username 用户名
     * @param string $password 密码
     * @return self
     */
    public static function createAdmin(string $username, string $password): self
    {
        $admin = new self();
        $admin->username = $username;
        $admin->password = md5($password);
        $admin->status = 1;
        $admin->created_at = time();
        $admin->updated_at = time();
        $admin->save();
        
        return $admin;
    }

    /**
     * 更新访问令牌
     * @param string $token
     * @return bool
     */
    public function updateAccessToken(string $token): bool
    {
        $this->access_token = $token;
        $this->updated_at = time();
        return $this->save();
    }

    /**
     * 更新密码
     * @param string $password
     * @return bool
     */
    public function updatePassword(string $password): bool
    {
        $this->password = password_hash($password, PASSWORD_DEFAULT);
        $this->updated_at = time();
        return $this->save();
    }

    /**
     * 更新状态
     * @param int $status
     * @return bool
     */
    public function updateStatus(int $status): bool
    {
        $this->status = $status;
        $this->updated_at = time();
        return $this->save();
    }
} 